// 处理权限列表，返回true(有权限)，false(无权限)
export function handleAuth(auth) {
  const authList = JSON.parse(localStorage.getItem('authorities'))
  const isSuperAdmin = localStorage.getItem('isSuperAdmin')
  const getAdmin = {
    'false': false,
    'true': true
  }
  const result = getAdmin[isSuperAdmin] || authList.includes(auth)
  return result
}

// 同步数组拖动排序的方法
function dragSort(oldIndex, newIndex) {
  if (oldIndex === newIndex) {
    console.error(new Error('移动位置不能相同'))
    return false
  }
  let arr = []
  const flag = newIndex > oldIndex // 新位置index大于旧位置index
  const current = this[oldIndex] // 把需要移动的元素保存起来
  const num = flag ? 0 : newIndex // 循环开始数值
  const length = flag ? newIndex + 1 : oldIndex // 循环的次数

  for (let i = num; i < length; i++) {
    if (flag) {
      if (i !== oldIndex) {
        arr.push(this[i])
      }
    } else {
      arr.push(this[i])
    }
  }
  this.splice(newIndex, 1, current) // 把需要移动的元素替换到新位置

  // 把抽离的元素，按arr的位置替换到元数据的数组位置
  arr.forEach((a, i) => {
    this.splice(flag ? i : i + 1 + newIndex, 1, a)
  })
}
Array.prototype.dragSort = dragSort


// 操作防抖
export const debounce = function (fn, wait, immediate) {
  var timer;
  return function () {
    if (timer) clearTimeout(timer);
    if (immediate) {
      // 如果已经执行过，不再执行
      let callNow = !timer;
      timer = setTimeout(() => {
        timer = null;
      }, wait)
      if (callNow) {
        fn.apply(this, arguments)
      }
    } else {
      timer = setTimeout(() => {
        fn.apply(this, arguments)
      }, wait);
    }
  }


}

